package controller

import (
	"fmt"
	"go.uber.org/zap"
	"go_web_learn/common"
	"go_web_learn/initconf"
	"go_web_learn/model"

	"github.com/gin-gonic/gin"
	"gorm.io/gorm"
)

type BlogArticleController struct {
	BaseController
}

func (bac BlogArticleController) AddArticle(c *gin.Context) {
	// 获取param参数
	aa := c.Query("aa")
	initconf.InfoCtx(c, "获得参数", zap.String("aa", aa))
	initconf.WarnCtx(c, "参数信息", zap.String("aa", aa))
	map1 := make(map[string]string)
	map1["hello"] = "world"
	tttt := model.BlogArticle{Title: "lalalalalalalal"}
	initconf.ErrorCtx(c, "信息", zap.String("aa", aa), zap.Any("map1", map1), zap.Any("tttt", tttt))
	// x-www-form-urlencoded 获取post这个类型的参数
	bb := c.PostForm("bb")
	fmt.Println(bb)
	article := model.BlogArticle{}
	bindErr := c.Bind(&article)
	fmt.Println(bindErr)
	fmt.Printf("类型为=%T\n", article)
	fmt.Printf("类型为=%T\n", &article)
	var aaaa *model.BlogArticle
	fmt.Printf("类型为=%T\n", aaaa)
	// 这个会报错
	// fmt.Printf("类型为=%T\n", *aaaa)
	db := initconf.DB
	result := true
	// 使用事物
	db.Transaction(func(tx *gorm.DB) error {
		// 创建时间和修改时间会自动帮我们生成,可以不管
		err := tx.Create(&article).Error
		if err != nil {
			result = false
		}
		return err
	})
	bac.success(c, result)
}

func (bac BlogArticleController) ListArticle(c *gin.Context) {
	db := initconf.DB
	list := []model.BlogArticle{}
	db.Offset(0).Limit(10).Find(&list)
	initconf.InfoCtxField(c, "日志输出",
		zap.String("aaa", "111"),
		zap.String("bbb", "222"),
	)

	initconf.InfoCtx(c, "日志输出", "aaa=111", "bbb=222")

	common.ResponseSuccess(c, list)
}
